/*
 * @Author: sonss
 * @Date: 2024-03-07 15:59:37
 * @LastEditTime: 2024-03-07 19:27:01
 * @FilePath: /tencent-meeting-sdk-golang/qqmeeting/meeting_record.go
 * @Description: 会议录制
 */
package qqmeeting

// 查询会议录制列表
type RecordsQueryRequest struct {
	OperatorID     *string `query:"operator_id"`      // 操作者 ID
	OperatorIDType *int    `query:"operator_id_type"` // 操作者 ID 的类型
	UserID         *string `query:"userid"`           // 操作者 ID
	MeetingID      *string `query:"meeting_id"`       // 会议ID
	MeetingCode    *string `query:"meeting_code"`     // 会议 code
	StartTime      int     `query:"start_time"`       // 查询起始时间戳，UNIX 时间戳（单位秒）
	EndTime        int     `query:"end_time"`         // 查询结束时间戳，UNIX 时间戳（单位秒）
	PageSize       int     `query:"page_size"`        // 分页大小，默认值为10，最大为20
	Page           int     `query:"page"`             // 页码，从1开始，默认值为1
	MediaSetType   int     `query:"media_set_type"`   // 会议类型
}

func (req RecordsQueryRequest) getDescriptor() *MeetingRequestDescriptor {
	return &RequestDescriptorRecordsQuery
}

func (req RecordsQueryRequest) fillPlaceholder(args ...interface{}) string {
	return req.getDescriptor().Url
}

type RecordsQueryResponse struct {
	TotalCount     int              `json:"total_count"`     // 分页查询返回数据总数
	CurrentSize    int              `json:"current_size"`    // 分页查询返回单页数据条数
	CurrentPage    int              `json:"current_page"`    // 分页查询返回当前页码
	TotalPage      int              `json:"total_page"`      // 分页查询返回分页总数
	RecordMeetings []*RecordMeeting `json:"record_meetings"` // 会议录制列表
}

// 查询单个录制详情
type RecordAddressesQueryRequest struct {
	RecordFileID   string  `param:"record_file_id"`   // 录制文件 ID
	OperatorID     *string `query:"operator_id"`      // 操作者 ID
	OperatorIDType *int    `query:"operator_id_type"` // 操作者 ID 的类型
	UserID         *string `query:"userid"`           // 操作者 ID
}

func (req RecordAddressesQueryRequest) getDescriptor() *MeetingRequestDescriptor {
	return &RequestDescriptorRecordAddressesQuery
}

func (req RecordAddressesQueryRequest) fillPlaceholder(args ...interface{}) string {
	return defaultPlaceholderFiller(req, args...)
}

type RecordAddressesQueryResponse struct {
	RecordFileID            string                             `json:"record_file_id"`             // 录制文件 ID
	MeetingID               string                             `json:"meeting_id"`                 // 会议 ID
	MeetingCode             string                             `json:"meeting_code"`               // 会议 code
	ViewAddress             string                             `json:"view_address"`               // 播放地址
	DownloadAddress         string                             `json:"download_address"`           // 录制文件下载地址，链接有效期为5分钟
	DownloadAddressFileType string                             `json:"download_address_file_type"` // 下载视频文件格式
	AudioAddress            string                             `json:"audio_address"`              // 音频下载地址，链接有效期为5分钟
	AudioAddressFileType    string                             `json:"audio_address_file_type"`    // 下载音频文件格式
	MeetingSummary          []*RecordAddressMeetingSummary     `json:"meeting_summary"`            // 录制转写文件列表
	AiMeetingTranscripts    []*RecordAddressMeetingTranscripts `json:"ai_meeting_transcripts"`     // 录制转写文件（智能优化版）列表
	AiMinutes               []*RecordAddressMinutes            `json:"ai_minutes"`                 // 智能纪要列表
}
